package co.edu.uniquindio.sicorrespondencia.entities;

import java.io.Serializable;
import javax.persistence.*;

import org.jboss.seam.annotations.Name;

import java.util.List;

/**
 * Esta entidad representa la empresa destino en el caso de que la modalidad del
 * trabajo de grado sea pasantia, es decir en esta entidad se guardan los datos
 * de las empresas que han solicitado pasantes en el pasado y las que
 * actualmente estan brindando pasantias a los estudiantes de la institucion
 * 
 * @author Tannia Rosero
 * @author Sofia Agudelo
 * 
 */
@Entity
@Table(name = "empresa")
@Name("empresa")
@NamedQueries(
@NamedQuery(name="buscarEmpresas", query="SELECT e FROM Empresa e")

)

public class Empresa implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "idEmpresa")
	private Long idEmpresa;

	@Column(name = "emailEmpresa")
	private String emailEmpresa;

	@Column(name = "nombreEmpresa")
	private String nombreEmpresa;

	@Column(name = "telefonoEmpresa")
	private int telefonoEmpresa;

	@Column(name = "ubicacionEmpresa")
	private String ubicacionEmpresa;

	// bi-directional many-to-one association to TrabajoGrado
	@OneToMany(mappedBy = "empresaTG")
	private List<TrabajoGrado> trabajoGrados;

	public Empresa() {
	}

	/**
	 * Este metodo permite obtener idEmpresa de la clase
	 * 
	 * @return el idEmpresa
	 */
	public Long getIdEmpresa() {
		return idEmpresa;
	}

	/**
	 * Este metodo permite fijar el idEmpresa de la entidad
	 * 
	 * @param idEmpresa
	 *            es el idEmpresa a fijar
	 */
	public void setIdEmpresa(Long idEmpresa) {
		this.idEmpresa = idEmpresa;
	}

	/**
	 * Este metodo permite obtener emailEmpresa de la clase
	 * 
	 * @return el emailEmpresa
	 */
	public String getEmailEmpresa() {
		return emailEmpresa;
	}

	/**
	 * Este metodo permite fijar el emailEmpresa de la entidad
	 * 
	 * @param emailEmpresa
	 *            es el emailEmpresa a fijar
	 */
	public void setEmailEmpresa(String emailEmpresa) {
		this.emailEmpresa = emailEmpresa;
	}

	/**
	 * Este metodo permite obtener nombreEmpresa de la clase
	 * 
	 * @return el nombreEmpresa
	 */
	public String getNombreEmpresa() {
		return nombreEmpresa;
	}

	/**
	 * Este metodo permite fijar el nombreEmpresa de la entidad
	 * 
	 * @param nombreEmpresa
	 *            es el nombreEmpresa a fijar
	 */
	public void setNombreEmpresa(String nombreEmpresa) {
		this.nombreEmpresa = nombreEmpresa;
	}

	/**
	 * Este metodo permite obtener telefonoEmpresa de la clase
	 * 
	 * @return el telefonoEmpresa
	 */
	public int getTelefonoEmpresa() {
		return telefonoEmpresa;
	}

	/**
	 * Este metodo permite fijar el telefonoEmpresa de la entidad
	 * 
	 * @param telefonoEmpresa
	 *            es el telefonoEmpresa a fijar
	 */
	public void setTelefonoEmpresa(int telefonoEmpresa) {
		this.telefonoEmpresa = telefonoEmpresa;
	}

	/**
	 * Este metodo permite obtener ubicacionEmpresa de la clase
	 * 
	 * @return el ubicacionEmpresa
	 */
	public String getUbicacionEmpresa() {
		return ubicacionEmpresa;
	}

	/**
	 * Este metodo permite fijar el ubicacionEmpresa de la entidad
	 * 
	 * @param ubicacionEmpresa
	 *            es el ubicacionEmpresa a fijar
	 */
	public void setUbicacionEmpresa(String ubicacionEmpresa) {
		this.ubicacionEmpresa = ubicacionEmpresa;
	}

	/**
	 * Este metodo permite obtener trabajoGrados de la clase
	 * 
	 * @return el trabajoGrados
	 */
	public List<TrabajoGrado> getTrabajoGrados() {
		return trabajoGrados;
	}

	/**
	 * Este metodo permite fijar el trabajoGrados de la entidad
	 * 
	 * @param trabajoGrados
	 *            es el trabajoGrados a fijar
	 */
	public void setTrabajoGrados(List<TrabajoGrado> trabajoGrados) {
		this.trabajoGrados = trabajoGrados;
	}

}